home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
ACORNUSERS
/
CBSA
/
COMPUTER
/
WIMP2
/
Docs
/
History
< prev
next >
Wrap
Text File
|
1999-05-19
|
12KB
|
325 lines
History of the Tornado II Support Module:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
19-05-1999:
-=-=-=-=-=-
* Now has ROM build option (for inclusion into a ROM image)
* Fixed bug where Wimp2_EnumerateTasks was (yet again!) returning data for
tasks which had died long ago (thanks to Andreas Walter for this)
Released v0.36 to the world!
20-03-1999:
-=-=-=-=-=-
* Finally greyed out Kill Task option in Wimp2Ctrl as it isn't supported
* Fixed bug reported by Andreas Walter: OS_GBPB 4 corrupts R4 so subsequent
OS_File 5 has wrong R4
* Fixed bug reported by Andreas Walter: Addr for returning to the kernel
from OS_* calls varies between platforms. Now uses a cunning guess routine to
determine the address.
* Fixed bug reported by Andreas Walter: Addr of R13_svc base varies between
platforms. Now guesses the base (rounds up to nearest 4k boundary)
17-02-1999:
-=-=-=-=-=-
In the days leading to this ...
* Three new calls, Wimp2_OpenTemplate, Wimp2_CloseTemplate and
Wimp2_ReportError. The first two disable preemption during them (thus fixing
the open template bug) and the third does a preemptively multitasked error
box. Note it doesn't work yet!
* A number of utilities, including a memory copying routine, string copying
routine, string length calculator and optimised divide routine.
* Wimp2 now maintains redraw areas in a seperate queue and conglomerates the
rectangles it receives, thus speeding redraws.
Released to Andrew only.
Version 0.33 fixed wrong pars to OS_SynchroniseCodeAreas
03-02-1999:
-=-=-=-=-=-
* Fixed spurious tab at end of each line produced by *wimp2_listtasks
* Fixed formatting error in *wimp2_listtasks
* Stopped *wimp2_listtasks generating so many spaces it locks the machine!
* Fixed bug where patched OS_File load routines were checking R3=0, not just
the bottom byte only
* Now OS_File load routines sync CPU caches if R3 top bit is set
* Added two new service messages to notify if pointer has entered or exited
a Wimp2 task's window
* Updated docs.
Released as v0.32
26-01-1999:
-=-=-=-=-=-
* Fixed bug that when *Desktop was done, a complaint was made about a
missing command *Wimp2_StartDekstopTask (removed in v0.21)
* Fixed bug in file op multitask code where file loads were crapping over
RMA and not setting R0-R5 on exit as well! Nasty bug this ...
* Fixed bug in file op multitask code where OS_File 12 & 14 were using the
wrong bits in OS_Find (a typo in the RO2 PRM's believe it or not ...)
* Added OS_File 0 intercept, this was cos Zap saves its files this way
* Changed the Templates in Wimp2Ctrl to ones compatible with <RO3.5
machines, thanks to whoever (forgotton!) who provided these.
Released as v0.31.
24-01-1999:
-=-=-=-=-=-
Fixed bug in EnumerateTasks where empty records were being returned.
Fixed bug where OS version was being incorrectly reported.
Added OS_File 10,12,14,16,255 interception to do the ops via buffered i/o
(ie; allows preemption during them)
Released as v0.30
20-01-1999:
-=-=-=-=-=-
Released v0.27 to the public.
18-01-1999:
-=-=-=-=-=-
v0.27 now.
Noticed Wimp2 task manager got dead slow when many tasks were active so
changed its update method.
Blaringly obvious bug introduced in v0.26, fixed.
16-01-1999:
-=-=-=-=-=-
v0.26 now.
Added poll mask to Wimp2_Poll, did away with HaltPreemption,
RestartPreemption and SetPollMask as the new system incorporates all these
anyway.
Added new service messages so patch doesn't try patching native Wimp2 apps.
14-01-1999:
-=-=-=-=-=-
Oops, forgot to update for quite a while!
Added *-commands to give helpful info.
Extended EnumerateTasks to give more info.
Made Initialise and CloseDown swallow their Wimp equivs.
Added SetTaskData, used to reset the used counter and max settings.
Added code to compute how long task is taking between polls.
Added code to preempt immediately if Poll queue is empty.
Added KillProcess, used to kill Wimp2 tasks. Isn't implemented yet though.
04-12-1998:
-=-=-=-=-=-
Moved to v0.21. Added return code 2 from 17, 18 & 19 handler code. Oddly
doesn't seem to work.
Added *Wimp2_ListTasks command.
03-12-1998:
-=-=-=-=-=-
Fixed patch to no longer intercept SWI vector. Was slowing machine and was
incompatible with pre-Arm6 and RO3.8+. Now uses a generic patching method.
27-12-1998:
-=-=-=-=-=-
Added HaltPreemption and RestartPreemption. These don't work properly yet.
Added service calls made just prior and just after Wimp_Poll. Allows patch to
set and remove semaphores.
Renamed module to Wimp2 to reflect it no longer being associated with Tornado.
Shuffled SWI's around. Changed SWI block for new module name.
Added EnumerateTasks and Version.
30-12-1996:
-=-=-=-=-=-
Due to my mother dying on the 22nd after having been in hospital since the
20th, essentially a whole week has been lost in development. This means
threads will not be implemented by the end of these Christmas holidays.
Apologies to those I promised they would be.
During the week fixed many potential reentracy problems and finally twigged
today yet another reentracy problem and fixed it through some god-awful code
to get around the SA bug too. It does mean interrupts get disabled for a good
bit of time though :(
Added Tornado_SetPollMask
18-12-1996:
-=-=-=-=-=-
Now is version 0.12alpha.
Fixed a bug in which Tornado_Initialise was returning the wrong tornado version
Implemented 1ms interrupt facilites.
1ms interrupt facilities don't seem to work! But after six hours of trial and
error, it would seem you need R14 in the stack frame. Why? Dammed if I know.
17-12-1996 (v0.11alpha release):
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
And then it hits me!!!! It may well be 3am, but I know what it is!!!
Tornado_RedrawWindow turns off preemption. But it doesn't really - it only
turned off the *interrupt* routine - so if there the polling code had
/already/ been requested by the interrupt routine and was pending - it would
execute during the redraw loop, right where it mustn't.
Thus the error was randomish. The worst kind.
I hate these kinds of bugs.
Now it tests the semaphore in the actual polling code instead. I hate easy
fixes to horrible bugs.
Changed the polling code so that if it's locked it sets a flag to tell
Tornado_GetRectangle to restart preemption once it's finished. It's more
efficient than interrupting every 1ms to see if the redraw's done yet.
Fixed a small potential bug in that should an app die during a redraw it will
take the support module with it as preemption is still locked out and this is
a global semaphore. Now it checks on app death to see if the semaphore is
set, and if it is it unsets it. Should be enough as the context consistancy
is maintained AFAICS.
Fixed another bug introduced by RO3 - apparently it doesn't like the
environment handlers getting changed unless it changed them. This BTW breaks
the RO2 API *again* in which you always set up your handler before using it -
never relying on it being set to anything from previous settings as anything
else might have changed it.
Obviously some twat at Acorn didn't think of this possibility ... anyway, the
module now restores the callback handler state after it's finished with that
handler.
Some odd bug still remains which causes preemption to halt and everything to
hang. I'm dammed if I know what it is though, but it's rare enough to make
myself feel okay in releasing it.
Changed how the preemptor requests restarting - now a general purpose status
variable is used and this can be used to determine the state of the system at
any time.
Released version 0.11alpha to hensa.
16-12-1996:
-=-=-=-=-=-
Spent the day trying to figure out this damn GetRectangle bug ...
15-12-1996:
-=-=-=-=-=-
Added error handling to the demo app.
Fixed a bug in the memory routines that was causing RMA usage mode to die.
Seems this GetRectangle bug is random. I have a window running here for the
past ten minutes okay yet the one before it died after only a few seconds.
Odd.
14-12-1996:
-=-=-=-=-=-
Thought it was a bug on SprOp 52 but actually it was my preemptor code not
exiting from the interrupt properly when a lock had been placed on
preemption. Twat I am ...
Now everything works! At 6.52pm today I am proud to announce the first fully
functional preempted RO multitasking application ever to run on the Acorn
series!
Ooar - doesn't seem to work quite so well! Somehow for odd reasons crashes
and dies with "Wimp_GetRectangle not called correctly". Odd.
Also the whole thing doesn't work on RO2. :( I think it's because RMA usage
doesn't work too great!
13-12-1996:
-=-=-=-=-=-
Yet another bug in RO has had me for a day now ...
This bug is in sprite area initialisation - when you initialise it with bits
8 and 9 clear it utterly bollocks the sprite area (not that any of the sprite
routines notice of course but just blindly lock up the machine in a random
nature). This one *definately* worked on RO2 ...
12-12-1996:
-=-=-=-=-=-
This bug has had me for four days now ...
Found it! Subroutines like .getblk and .execathread as called from .callwimppoll
use R13 which is a temporary variable in .callwimppoll!!!!
It was using the fp register dump as a stack for a while and other areas too.
Nasty!
Added vdu redirection dumping. Redirection into mask calls not trapped yet
though.
Bug found in RO! RO2 uses &2e,60,0,0,1 to return to screen - RO3.5 hangs on
this. Needs &2e,512+60,0,0,1 apparently (twats at Acorn ...). This BTW yet
again breaks API's *written* *in* *stone* in the RO2 PRM's but the twats just
don't care ... :(
Added error handling throughout the module. It now traps all possible problems
and sends them somewhere - when it can (it can't always). It also doesn't
necessarily send them to a nice place - the current application's error
handler is one such example ... ;)
Added facilities for a client application to handle errors occurring in the
tornado preemptor routine and fix the problem where necessary
08-12-1996:
-=-=-=-=-=-
Now is version 0.11alpha.
Added a trap to shut down the task as a preempted one should it die
unnaturally.
Added check in module finalise for whether tasks are still using it.
Added check to Tornado_Initialise to stop it running more than 32 processes
Added memory freeing on call Tornado_Closedown - memory leakage now doesn't
happen anymore
Added stacking and restoral of FP registers over Wimp_Poll - checks first to
see whether the FPEmulator can handle multiloads and stores and uses them if
it can.
07-12-1996 (v0.10alpha release):
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Found the bug sticking me for a long time (since last night): R12 was getting
corrupted by the APCS veneer for the 17,18 and 19 handler and then everything
was accessing the wrong workspace!
Uploaded the first version of the support module (0.10alpha) to hensa and
mailed it to a few friends.
06-12-1996:
-=-=-=-=-=-
Ran through the code - found myself using SVC reliant code where I was in USR
mode. Fixed it and it works (10.25pm)! (this also has the advantage as the
SVC reliant code causes that bug in the SA so this is no longer a problem).
Added Wimp_Poll returns storage and Tornado_Poll to retrieve it all.
Implemented support for 17,18 & 19 codes handler. Won't work though ... :(
30-11-1996:
-=-=-=-=-=-
Cobbled together some old tornado I code and rewrote it for this new
non-tornado context. Wrotes skeleton API's.
Awful skeleton module created but then refused to work. Realised 68000
programming was the cause and fixed the problems. Never tested it though.
Then went back to Trinity for the last week of term ...